#pragma once
#include <memory>
#include "BaseAST.h"
#include "ValMgr.h"
#include "code.h"
using std::unique_ptr;
class BaseExpAST : public BaseAST
{
public:
    virtual ~BaseExpAST() = default;
    unique_ptr<BaseExpAST>content;
    virtual void Dump() const;
    virtual bool is_lval() const;
    virtual cmd_val get_address() const;
    virtual void Analyze() const;
};

#include "AddAST.h"
#include "AndAST.h"
#include "AssignAST.h"
#include "CommaAST.h"
#include "EqAST.h"
#include "LAndAST.h"
#include "LOrAST.h"
#include "MulAST.h"
#include "NumberAST.h"
#include "OrAST.h"
#include "PostfixAST.h"
#include "PrimaryAST.h"
#include "RelAST.h"
#include "ShiftAST.h"
#include "TernaryAST.h"
#include "UnaryAST.h"
#include "ValAST.h"
#include "XorAST.h"